package com.lecture.util;

import java.util.*;

public class DateUtils {

	/*
	 * 日期处理模块 (将日期加上某些天或减去天数)返回字符串 将当前日期加减n天数。 如传入字符型"-5" 意为将当前日期减去5天的日期
	 * 如传入字符型"5" 意为将当前日期加上5天后的日期 返回字串 例(1999-02-03)
	 */
	public static final String dateAdd(String to) {
		int strTo;
		try {
			strTo = Integer.parseInt(to);
		} catch (Exception e) {
			System.out.println("日期标识转换出错! : \n:::" + to + "不能转为数字型");
			e.printStackTrace();
			strTo = 0;
		}
		Calendar strDate = Calendar.getInstance(); // java.util包
		strDate.add(Calendar.DATE, strTo); // 日期减 如果不够减会将月变动
		// 生成 (年-月-日) 字符串
		String meStrDate = strDate.get(Calendar.YEAR) + "-"
				+ String.valueOf(strDate.get(Calendar.MONTH) + 1) + "-"
				+ strDate.get(Calendar.DATE);
		return meStrDate;
	}

	// 计算两个日期之间的天数
	// date1应大于data2
	public static final int getDays(Date date1, Date date2) {
		int days = 0;
		days = (int) ((date1.getTime() - date2.getTime()) / (24 * 60 * 60 * 1000));
		return days;
	}

	// 计算两个日期之间的间隔（单位毫秒）
	// date1应大于data2
	public static final int datediff(Date date1, Date date2) {
		int days = 0;
		days = (int) (date1.getTime() - date2.getTime());
		return days;
	}

	/*
	 * 获取系统当前时间 声明成表态方法
	 */
	public static final String getsystemdate() {
		java.util.Date currentTime = new java.util.Date();
		java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
				"yyyy-MM-dd");
		String sDateTime = sdf.format(currentTime);
		return sDateTime;
	}

	public static final String getsystemdate(char type) {
		java.util.Date currentTime = new java.util.Date();
		String sDateTime, formattype;
		java.text.SimpleDateFormat sdf;
		switch (type) {
		case 'd':
			formattype = "yyyy-MM-dd";
			break;
		case 'h':
			formattype = "yyyy-MM-dd HH:mm:ss";
			break;
		case 's':
			formattype = "yyyy-MM-dd HH:mm:ss.SSS";
			break;
		default:
			formattype = "yyyy-MM-dd";
		}
		sdf = new java.text.SimpleDateFormat(formattype);
		sDateTime = sdf.format(currentTime);
		return sDateTime;
	}

	/*
	 * 把时间格式化，去掉毫秒，清确到秒 用rs.getObject("Date")从mssql中取出精确到秒的时间为参数 声明成表态方法，可以用
	 */
	public static final String getformatdate(Object objdate) {
		// yyyy-MM-dd HH:mm:ss.SSS 精确到毫秒
		// yyyy-MM-dd HH:mm:ss 精确到秒
		java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
				"yyyy-MM-dd HH:mm:ss");
		String sDateTime = sdf.format(objdate);
		return sDateTime;
	}

	/**
	 * 把时间格式化
	 * 
	 * @param value
	 * @return
	 */
	public static final String getformatdate(Object objdate, String formattype) {
		// yyyy-MM-dd HH:mm:ss.SSS 精确到毫秒
		// yyyy-MM-dd HH:mm:ss 精确到秒
		java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
				formattype);
		String sDateTime = sdf.format(objdate);
		return sDateTime;
	}

	/**
	 * 得到当前时间信息
	 * 
	 * @return String
	 */
	public static final String getCurrentDateinfo() {
		Calendar calendar = Calendar.getInstance();
		int year, month, day, weekday;
		String val = "";
		year = calendar.get(Calendar.YEAR);
		month = calendar.get(Calendar.MONTH) + 1;
		day = calendar.get(Calendar.DATE);
		weekday = calendar.get(Calendar.DAY_OF_WEEK);
		switch (weekday) {
		case 1:
			val = "星期天";
			break;
		case 2:
			val = "星期一";
			break;
		case 3:
			val = "星期二";
			break;
		case 4:
			val = "星期三";
			break;
		case 5:
			val = "星期四";
			break;
		case 6:
			val = "星期五";
			break;
		default:
			val = "星期六";
		}
		return year + "年" + month + "月" + day + "日 " + val;
	}

	public static java.sql.Date getSystemSDate() {
		java.util.Date udate = new java.util.Date();
		java.sql.Date msDate = new java.sql.Date(udate.getTime());
		return msDate;
	}
}
